home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Mark Pilgrim / Mousebroken 1.0.1 / source / Modules source ƒ / Wrapping mouse / Wrapping module.c next >
Encoding:
C/C++ Source or Header  |  1994-10-30  |  1.3 KB  |  78 lines  |  [TEXT/KAHL]

  1. /* Wrapping Mouse -- a Mousebroken mouse module */
  2. /* written 11/93 by Mark Pilgrim */
  3. /* This module placed in the public domain. */
  4.  
  5. #include "Retrace.h"
  6. #include "GestaltEQU.h"
  7.  
  8. extern Boolean CrsrNew : 0x8CE;
  9. extern Point mTemp : 0x828;
  10. extern Point RawMouse : 0x82C;
  11.  
  12. Rect            gMainScreenBounds;
  13. unsigned long    me;
  14.  
  15. void header(void);
  16. void main(void);
  17.  
  18. void header(void)
  19. {
  20.     asm
  21.     {
  22.         dc.l    0
  23.         move.l a0, d0
  24.         lea header, a0
  25.         jmp main
  26.     }
  27. }
  28.  
  29. #include "SetUpA4.h"
  30.  
  31. void main(void)
  32. {
  33.     VBLTask*        myVBL;
  34.     long            gestalt_temp;
  35.     OSErr            isHuman;
  36.     
  37.     RememberA0();
  38.     SetUpA4();
  39.     
  40.     asm
  41.     {
  42.         move.l d0, myVBL
  43.     }
  44.     
  45.     if (me != 'MMdl')
  46.     {
  47.         isHuman = Gestalt(gestaltQuickdrawVersion, &gestalt_temp);
  48.         gMainScreenBounds=(isHuman || (gestalt_temp < gestalt8BitQD)) ? screenBits.bounds :
  49.             (**GetMainDevice()).gdRect;
  50.         me = 'MMdl';
  51.     }
  52.     
  53.     if (RawMouse.h==gMainScreenBounds.left)
  54.     {
  55.         RawMouse.h=mTemp.h=gMainScreenBounds.right-2;
  56.         CrsrNew = TRUE;
  57.     }
  58.     else if (RawMouse.h==gMainScreenBounds.right-1)
  59.     {
  60.         RawMouse.h=mTemp.h=gMainScreenBounds.left+1;
  61.         CrsrNew = TRUE;
  62.     }
  63.     
  64.     if (RawMouse.v==gMainScreenBounds.top)
  65.     {
  66.         RawMouse.v=mTemp.v=gMainScreenBounds.bottom-2;
  67.         CrsrNew = TRUE;
  68.     }
  69.     else if (RawMouse.v==gMainScreenBounds.bottom-1)
  70.     {
  71.         RawMouse.v=mTemp.v=gMainScreenBounds.top+1;
  72.         CrsrNew = TRUE;
  73.     }
  74.     
  75.     myVBL->vblCount = 1;
  76.     RestoreA4();
  77. }
  78.